package com.naiterui.ehp.bs.doctor.dao;

import com.naiterui.ehp.bp.domain.ConsultSession;

import java.util.Date;
import java.util.List;

/**
 * 会话信息表(IM会话冗余)Dao
 *
 * @since 2.0.0
 */
public interface IConsultSessionDao {

    void save(ConsultSession consultSession);

    void update(ConsultSession consultSession);

    /**
     * 根据IM会话标志获取ConsultSession对象(加update锁)
     * IConsultSessionDao.getBySessionId()
     *
     * @param sessionId
     *
     * @return
     *
     * @Date 2016年1月15日
     * @since 2.0.0
     */
    ConsultSession getBySessionId(String sessionId);

    /**
     * 更新会话推药标记
     * IConsultSessionDao.updateSessionRecomFlag()
     *
     * @param id
     *
     * @Author guoyongxiang
     * @Date 2017年8月4日
     * @since 2.9.0
     */
    void updateSessionRecomFlag(Long id);

    /**
     * 获取医患之间的会话信息
     *
     * @param doctorId   医生ID
     * @param patientIds 患者ID集合
     * @param date       该日期之后
     *
     * @return 结果
     */
    List<ConsultSession> getConsultSession(Long doctorId, List<Long> patientIds, Date date);

    List<ConsultSession> getConsultSession(Long doctorId, Date timeGt, Date timeLt);

    /**
     * 获取咨询会话
     * @param doctorId 医生id
     * @param patientId 患者id
     * @param inquirerId 就诊人id
     * @return 咨询会话
     */
    ConsultSession findConsultSessionByDoctorIdAndPatientIdAndInquirerId(Long doctorId, Long patientId, Long inquirerId);
}
